import java.util.*;

public class Practice1 {
    //https://ac.nowcoder.com/acm/problem/222104
    //重排字符串
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        char[] ss = sc.next().toCharArray();
        //找出最大长度的单词
        char maxChar = '0';
        int maxCount = 0;
        int[] hash = new int[26];
        for (int i = 0; i < n; i++) {
            char s = ss[i];
            if(++hash[s - 'a'] > maxCount){
                maxChar = s;
                maxCount = hash[s - 'a'];
            }
        }
        //判断是否可以进行重排字符串
        if(maxCount > (n + 1) / 2){
            System.out.println("no");
        }else{
            System.out.println("yes");
            //进行重排字符串
            char[] arr = new char[n];
            int index = 0;
            //先排序最长的字符串, 然后排序剩下的字符
            while(maxCount-- > 0){
                arr[index] = maxChar;
                index += 2;
            }
            for (int i = 0; i < 26; i++) {
                if(hash[i] != 0 && i != (maxChar - 'a')){
                    while(hash[i]-- > 0){
                        //判断 index 是否会溢出, 如果溢出, 换成从奇数位开始运行
                        if(index >= n){
                            index = 1;
                        }
                        arr[index] = (char)(i + 'a');
                        index += 2;
                    }
                }
            }
            for (int i = 0; i < n; i++) {
                System.out.print(arr[i]);
            }
        }
    }
}
